One of the benefits which is often cited for cloud computing is that it provides the users (who are referred to as tenants) with flexible (or elastic) access to resources. The user asks the cloud provider for the resources they require, in terms of the number of compute instances, and they are then charged on the basis of how many compute instances they requested and the length of time over which they were used. This, however, places a burden on the user as they must determine the number of compute instances they require and can result in inefficiencies where a user requests more resources than are actually needed to complete their job. The situation is complicated further where there are shared resources within the datacenter (e.g. the internal network or cloud storage) as the activities of other users can cause the performance experienced by a user to vary significantly. As a result a user's prediction may under-estimate the resources required by a significant margin or a user may over provision (i.e. request more resources than they think they will actually need) just in case.
The embodiments described below are not limited to implementations which solve any or all of the disadvantages of known methods of operating and managing datacenters.